package com.blank.server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 实现服务器的初始化和关闭
 */
public class ServerInitClose {

    /**
     * 自定义成员变量来记录 socket 和通信输入输出流
     */
    private ServerSocket serverSocket;
    private Socket socket;
    private ObjectInputStream ois;
    private ObjectOutputStream oos;

    /**
     * 实现服务器的初始化操作
     */
    public void serverInit() throws IOException {
        // 创建 ServerSocket 类型的对象并初始化端口号。
        serverSocket = new ServerSocket(8888);

        // 等待客户端的连接，调用 accept 的方法。
        System.out.println("等待客户端的连接请求...");
        socket = serverSocket.accept();
        System.out.println("客户端连接成功");
        System.out.println();

        // 初始化输入输出流进行通信
        ois = new ObjectInputStream(socket.getInputStream());
        oos = new ObjectOutputStream(socket.getOutputStream());
    }

    /**
     * 实现服务器的关闭操作
     */
    public void serverClose() throws IOException {
        // 关闭 socket 并释放资源
        if (null != oos) {
            oos.close();
        }
        if (null != ois) {
            ois.close();
        }
        if (null != socket) {
            socket.close();
        }
        if (null != serverSocket) {
            serverSocket.close();
        }
        System.out.println("服务器成功关闭");
    }

    public ObjectInputStream getOis() {
        return ois;
    }

    public ObjectOutputStream getOos() {
        return oos;
    }
}
